home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / OpenGL 1.0 SDK / Documentation / compiled_vertex_array.txt < prev    next >
Encoding:
Text File  |  1999-05-18  |  4.8 KB  |  149 lines  |  [TEXT/ttxt]

  1. XXX - Not complete yet!!!
  2.  
  3. Name
  4.  
  5.     EXT_compiled_vertex_array
  6.  
  7. Name Strings
  8.  
  9.     GL_EXT_compiled_vertex_array
  10.  
  11. Version
  12.  
  13.     $Date: 1996/11/21 00:52:19 $ $Revision: 1.3 $
  14.  
  15. Number
  16.  
  17.     97
  18.  
  19. Dependencies
  20.  
  21.     None
  22.  
  23. Overview
  24.  
  25.     This extension defines an interface which allows static vertex array
  26.     data to be cached or pre-compiled for more efficient rendering.  This
  27.     is useful for implementations which can cache the transformed results
  28.     of array data for reuse by several DrawArrays, ArrayElement, or
  29.     DrawElements commands.  It is also useful for implementations which
  30.     can transfer array data to fast memory for more efficient processing.
  31.  
  32.     For example, rendering an M by N mesh of quadrilaterals can be
  33.     accomplished by setting up vertex arrays containing all of the
  34.     vertexes in the mesh and issuing M DrawElements commands each of
  35.     which operate on 2 * N vertexes.  Each DrawElements command after
  36.     the first will share N vertexes with the preceding DrawElements
  37.     command.  If the vertex array data is locked while the DrawElements
  38.     commands are executed, then OpenGL may be able to transform each
  39.     of these shared vertexes just once.
  40.  
  41. Issues
  42.  
  43.     * Is compiled_vertex_array the right name for this extension?
  44.  
  45.     * Should there be an implementation defined maximum number of array
  46.       elements which can be locked at a time (i.e. MAX_LOCKED_ARRAY_SIZE)?
  47.  
  48.       Probably not, the lock request can always be ignored with no resulting
  49.       change in functionality if there are insufficent resources, and allowing
  50.       the GL to define this limit can make things difficult for applications.
  51.     
  52.     * Should there be any restrictions on what state can be changed while
  53.       the vertex array data is locked?
  54.  
  55.       Probably not.  The GL can check for state changes and invalidate
  56.       any cached vertex state that may be affected.  This is likely to
  57.       cause a performance hit, so the preferred use will be to not change
  58.       state while the vertex array data is locked.
  59.     
  60. New Procedures and Functions
  61.  
  62.     void LockArraysEXT (int first, sizei count)
  63.     void UnlockArraysEXT (void)
  64.  
  65. New Tokens
  66.  
  67.     Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
  68.     GetFloatv, and GetDoublev:
  69.  
  70.     ARRAY_ELEMENT_LOCK_FIRST_EXT
  71.     ARRAY_ELEMENT_LOCK_COUNT_EXT
  72.  
  73. Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
  74.  
  75.    After the discussion of InterleavedArrays, add a description of
  76.    array compiling/locking.
  77.  
  78.    The currently enabled vertex arrays can be locked with the command
  79.    LockArraysEXT.  When the vertex arrays are locked, the GL
  80.    can compile the array data or the transformed results of array
  81.    data associated with the currently enabled vertex arrays.  The
  82.    vertex arrays are unlocked by the command UnlockArraysEXT.
  83.  
  84.    Between LockArraysEXT and UnlockArraysEXT the application
  85.    should ensure that none of the array data in the range of
  86.    elements specified by <first> and <count> are changed.
  87.    Changes to the array data between the execution of LockArraysEXT
  88.    and UnlockArraysEXT commands may affect calls may affect DrawArrays,
  89.    ArrayElement, or DrawElements commands in non-sequential ways.
  90.  
  91.    While using a compiled vertex array, references to array elements
  92.    by the commands DrawArrays, ArrayElement, or DrawElements which are
  93.    outside of the range specified by <first> and <count> are undefined.
  94.  
  95. Additions to Chapter 3 of the 1.1 Specification (Rasterization)
  96.  
  97.     None
  98.  
  99. Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
  100. and the Frame Buffer)
  101.  
  102.     None
  103.  
  104. Additions to Chapter 5 of the 1.1 Specification (Special Functions)
  105.  
  106.     LockArraysEXT and UnlockArraysEXT are not complied into display lists
  107.     but are executed immediately.
  108.  
  109. Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
  110.  
  111.     None
  112.  
  113. Additions to the GLX Specification
  114.  
  115.     XXX - Not complete yet!!!
  116.  
  117. GLX Protocol
  118.  
  119.     XXX - Not complete yet!!!
  120.  
  121. Errors
  122.  
  123.     INVALID_VALUE is generated if LockArrarysEXT parameter <first> is less
  124.     than zero.
  125.  
  126.     INVALID_VALUE is generated if LockArraysEXT parameter <count> is less than
  127.     or equal to zero.
  128.  
  129.     INVALID_OPERATION is generated if LockArraysEXT is called between execution
  130.     of LockArraysEXT and corresponding execution of UnlockArraysEXT.
  131.  
  132.     INVALID_OPERATION is generated if UnlockArraysEXT is called without a
  133.     corresponding previous execution of LockArraysEXT.
  134.  
  135.     INVALID_OPERATION is generated if LockArraysEXT or UnlockArraysEXT is called
  136.     between execution of Begin and the corresponding execution of End.
  137.  
  138. New State
  139.                                 Initial
  140.     Get Value                Get Command    Type    Value    Attrib
  141.     ---------                -----------    ----    -------    ------
  142.  
  143.     ARRAY_ELEMENT_LOCK_FIRST_EXT    GetIntegerv    Z+    0    client-vertex-array
  144.     ARRAY_ELEMENT_LOCK_COUNT_EXT    GetIntegerv    Z+    0    client-vertex-array
  145.  
  146. New Implementation Dependent State
  147.  
  148.     None
  149.